chore(ci): add setup-cli smoke test workflow#5315
Merged
Merged
Conversation
Adds two post-publish jobs to release-shared.yml that exercise supabase/setup-cli against the just-published beta across the runners real users hit: ubuntu-latest, macos-latest, windows-latest, and an Alpine container (node:20-alpine to provide a musl-linked Node for the JS action to launch). Gated to beta releases (`channel == 'beta' && !dry_run`) so PR smoke runs and stable cuts don't pay the wall-clock cost. The Alpine leg exists to catch regressions like supabase/setup-cli#427 where musl libc + archive layout changes broke the action silently. Refs CLI-1507.
Extracts the post-beta setup-cli smoke jobs into a standalone reusable workflow (`setup-cli-smoke-test.yml`) that supports both `workflow_call` (invoked from release-shared.yml after a beta publish) and `workflow_dispatch` with a `version` input. This lets us re-run the smoke against any already-published CLI version on demand — useful when debugging setup-cli regressions or confirming a previously broken environment (Alpine) is back to green without cutting a new release. release-shared.yml's two inline jobs collapse to a single nested workflow call.
Moves the setup-cli smoke job to the end of release-shared.yml and hangs it off publish, publish-homebrew, and publish-scoop so it can never block the brew/scoop pushes — those run first and the smoke is a post-release signal that fires regardless of channel. `if: always() && !inputs.dry_run && needs.publish.result == 'success'` keeps the smoke running when publish-homebrew / publish-scoop skip (alpha) or fail, while still requiring the GitHub release the action needs to download from.
GitHub Actions disallows expressions in `uses:`, so the action ref is selected via two `if:`-gated install steps keyed off a new `major-version` matrix dimension. The cross-runner matrix now fans out to 6 legs (ubuntu/macos/windows × v1/v2) and the Alpine job to 2 legs (v1/v2), covering both the v1 archive-layout path and the v2 glibc/musl bun-binary path called out in supabase/setup-cli#427.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Add a new GitHub Actions workflow to smoke test the
supabase/setup-cliaction against published CLI versions. This catches regressions like setup-cli#427 where musl libc and archive layout changes broke the action on Alpine silently.Key changes:
New
.github/workflows/setup-cli-smoke-test.ymlworkflow that:workflow_dispatchor called from other workflowsUpdated
.github/workflows/release-shared.ymlto:setup-cli-smokejob that runs after beta releasesalways() && needs.publish.result == 'success'to run even when homebrew/scoop jobs are skipped or failThe Alpine job is kept separate because GitHub Actions only honors the
container:field on Linux runners, and the musl-vs-glibc regressions only reproduce inside a real Alpine container.Closes: CLI-1507
https://claude.ai/code/session_01NzzeYET8sYhpCVdSvBBJhC